package array.medium;

/**
 * 11.盛水最多的容器
 */
public class maxArea {

    public static void main(String[] args) {
        int[] test = {4,0,2,1,4};
        System.out.println(MyCode(test));
    }

    /**
     * 双指针
     * 我们在由线段长度构成的数组中使用两个指针，一个放在开始，一个置于末尾。
     * 此外，我们会使用变量 maxarea 来持续存储到目前为止所获得的最大面积。
     * 在每一步中，我们会找出指针所指向的两条线段形成的区域，更新 maxarea，并将指向较短线段的指针向较长线段那端移动一步。
     * @param height
     * @return
     */
    public static int MyCode(int[] height) {
        int p1 = 0;
        int p2 = height.length - 1;
        int max = 0;
        int area;

        while (p1 < p2) {

            if (height[p1] > height[p2]) {
                area = height[p2] * (p2 - p1);
                p2--;
            } else {
                area = height[p1] * (p2 - p1);
                p1++;
            }
            max = area > max ? area : max;
        }
        return max;
    }
}
